case class Product[E, A](run: (E, A))

// implicit def productFunctor = ...